package cn.ydw.community.service;

import cn.ydw.community.entity.LoginTicket;
import cn.ydw.community.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.security.core.GrantedAuthority;

import java.util.Collection;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author dw
 * @since 2020-10-18
 */
public interface UserService extends IService<User> {

    User selectUserById(Integer id);

    /**
     * 用户注册
     * @param user
     * @return
     */
    Map<String,Object> register(User user);

    /**
     * 激活登录状态
     * @param userId
     * @param code
     * @return
     */
    int activation(int userId, String code);
    /**
     * 用户登录
     */
    Map<String,Object> login(String username, String password, int expiredSeconds);

    LoginTicket findLoginTicket(String ticket);

    void logout(String ticket);

    /**
     * 更新用户头像
     * @param userId
     * @param headerUri
     * @return
     */
    int updateHeader(Integer userId, String headerUri);

    /**
     * 通过用户名查找对象
     */
    User findUserByName(String username);

    /**
     * 获取用户权限
     * @param userId
     * @return
     */
    Collection<? extends GrantedAuthority> getAuthorities(int userId);

    /**
     * 修改用户密码
     */
    int updatePassword(Integer userId, String newPassword);
}
